﻿ 
namespace Core.Items.Modules
{
    /*

		MetaGroup                      = Weapons
		Group                          = MissileLaunchers
		Size                           = Medium
		Module                         = pelistec-tr250 medium missile launcher prototype
		CpuUsage                       = 43.00 TF
		ReactorUsage                   = 162.00 RP
		Type                           = Active
		Slot                           = Missile
		TechnologicalLevel             = T4P
		Mass                           = 412.50 kg
		PackedVolume                   = 1.00 U
		Volume                         = 2.00 U
		AccumulatorConsumption         = 2.00 AP
		CycleTime                      = 10.50 sec
		AmmoChargeType                 = Medium missiles
		AmmoChargeCapacity             = 60 pcs
		Damage                         = 100 %
		HitDispersion                  = 1.00 •
		MissileOptimalRangeModification = 20.00 %
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;
    
    /// <summary>
    /// Pelistec-TR250 medium missile launcher prototype module class
    /// </summary>
    /// <remarks>File generated on 31/10/2011 16:00:57</remarks>
    public sealed class PelistecTr250MediumMissileLauncherPrototype : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="PelistecTr250MediumMissileLauncherPrototype"/> class.
        /// </summary>
        public PelistecTr250MediumMissileLauncherPrototype()
            : base(
            "Pelistec-TR250 medium missile launcher prototype",
            "",
            ModuleMetaGroupsEnum.Weapons,
            ModuleGroupsEnum.MissileLaunchers,
            TechnologyLevelsEnum.Level4|TechnologyLevelsEnum.Prototype,
            SizesEnum.Medium,
            new LazyFeature[] { 
				new LazyFeature(typeof(WeaponCpuUsage<double>),43.00),
				new LazyFeature(typeof(WeaponReactorUsage<double>),162.00),
				new LazyFeature(typeof(ModuleMass<double>),412.50),
				new LazyFeature(typeof(WeaponAccumulatorUsage<double>),2.00),
				new LazyFeature(typeof(AmmunitionType<AmmunitionTypesEnum>),AmmunitionTypesEnum.MediumMissiles),
				new LazyFeature(typeof(AmmoCapacity<double>),60),
				new LazyFeature(typeof(MediumMissileLauncherCycleTime<double>),10.50),
				new LazyFeature(typeof(MediumMissileLauncherHitDispersion<double>),1.00),
				new LazyFeature(typeof(MediumMissileLauncherDamage<double>),100),
				new LazyFeature(typeof(MissileLauncherOptimal<double>),0), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 412.50 ){ IsVisible = false },
				new Modifier( FeatureTypesEnum.Ammo, FeaturesEnum.MissileOptimal, 0.2 ){ Unit = UnitsEnum.Percentage, DisplayName = "Missile optimal range" }, } )
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Active; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Chassis; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Missile; }
        }
    }
}